import matplotlib.pyplot as plt

# 原始数据（保持不变）
x1 = [0, 107, 253, 700, 1200, 1462, 172, 1746, 1828, 1875, 1939, 1996, 2091, 2184, 2400, 2500, 2900, 3173, 3591, 3800, 4217, 4300, 4800, 5300, 5693, 5900, 6074, 6142]
y1 = [47.755, 50, 45, 46, 47, 45, 46, 43, 40, 39, 38, 37, 38, 40, 42, 43, 45, 44, 43, 42, 43, 44, 45, 44, 43, 45, 50, 47]
x2 = [0, 108, 400, 900, 1063, 1364, 1475, 1662, 1830, 2064, 2195, 2400, 2500, 2900, 3400, 3900, 4223, 4400, 4900, 5400, 5678, 5850, 6070, 6136]
y2 = [47.755, 50, 45, 46, 47, 45, 46, 43, 40, 39, 38, 42, 43, 45, 44, 43, 42, 43, 44, 45, 44, 43, 50, 47]

# 创建画布和子图（调整高度，增加底部边距）
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 10), gridspec_kw={'hspace': 0.4})  # 增加子图间距

# -------------------- 2016.6.8 河底高程（关键修改） --------------------
# 使用索引（0,1,2...）作为X轴位置，确保等间距
ax1.fill_between(range(len(x1)), y1, color='#964B00', alpha=0.8)
ax1.set_title('2016.6.8 河底高程', fontsize=14)
ax1.set_ylabel('河底高程（米）', fontsize=12)
ax1.set_xlabel('起点距离（米）', fontsize=12)  # 补充ax1的X轴标签

# 设置X轴刻度（索引位置 + 原始数据标签）
ax1.set_xticks(range(len(x1)))  # 刻度位置为0,1,2...（等间距）
ax1.set_xticklabels(x1,        # 刻度标签显示原始距离值
                    rotation=45,  # 标签旋转45度避免重叠
                    ha='right',   # 右对齐标签（与旋转方向匹配）
                    fontsize=8)   # 减小字体大小（原始数据点多，避免拥挤）

ax1.grid(axis='y', linestyle='--', alpha=0.7)

# -------------------- 2016.10.20 河底高程（同步修改） --------------------
ax2.fill_between(range(len(x2)), y2, color='#964B00', alpha=0.8)
ax2.set_title('2016.10.20 河底高程', fontsize=14)
ax2.set_xlabel('起点距离（米）', fontsize=12)
ax2.set_ylabel('河底高程（米）', fontsize=12)

# 设置X轴刻度（索引位置 + 原始数据标签）
ax2.set_xticks(range(len(x2)))
ax2.set_xticklabels(x2,
                    rotation=45,
                    ha='right',
                    fontsize=8)

ax2.grid(axis='y', linestyle='--', alpha=0.7)

# 调整全局边距（重点！增加底部空间避免标签被截断）
plt.subplots_adjust(bottom=0.2, left=0.1, right=0.95, top=0.95)

# 保存并显示图形
plt.savefig('2016年检测日河底高程变化图.png', dpi=300, bbox_inches='tight')
plt.show()